// 评分函数
const calculateScore = (
  group_name,
  stats,
  // 权重配置，您可以根据需要调整各项指标的权重
  // todo: 动态传递平均参数
  weights = {
    accuracyRate: 0.4, // 准确率的权重
    maxConsecutiveCorrect: 0.3, // 最大连续正确次数的权重
    maxConsecutiveIncorrect: 0.2, // 最大连续错误次数的惩罚权重
    systemErrorCount: 0.2, // 系统性错误次数的惩罚权重
    randomErrorCount: 0.1, // 偶然错误次数的惩罚权重
  }
) => {
  // 高误差模式容忍度
  // todo: 动态传递平均连续误差次数
  const errorTolerance = 5; // 容忍误差模式的最大次数
  if (stats.isHighErrorMode && stats.systemErrorCount > errorTolerance) {
    // console.log(`组 ${group_name} 被排除，因为它属于高误差模式.`);
    return -Infinity;
  }

  // 计算加权评分
  const score =
    stats.accuracyRate * weights.accuracyRate +
    stats.maxConsecutiveCorrect * weights.maxConsecutiveCorrect -
    stats.maxConsecutiveIncorrect * weights.maxConsecutiveIncorrect +
    (1 / (1 + stats.systemErrorCount)) * weights.systemErrorCount + // 错误次数少的更好
    (1 / (1 + stats.randomErrorCount)) * weights.randomErrorCount; // 偶然错误次数少的更好

  // console.log(`组 ${group_name} 的评分为: ${score}`);
  return score;
};

module.exports = calculateScore;
